CREATE PROCEDURE SP_CARGA_STAGING_FATO_VENDA(@DATA DATE)
AS
BEGIN
	DECLARE @DATA_CARGA DATE,
			@CDPRODUTO INT,
			@CDCLIENTE INT,
			@CDFUNCIONARIO INT,
			@CDFORMAPAGAMENTO INT,
			@CDVENDA INT,
			@VALOR DECIMAL(11,2),
			@QUANTIDADE INT,
			@VALORCOMISSAO DECIMAL(11,2),
			@DATAVENDA DATE,
			
			@IDTEMPO INT,
			@IDCLIENTE INT,
			@IDFORMAPAGAMENTO INT,
			@IDFUNCIONARIO INT,
			@IDPRODUTO INT 
			
	DECLARE C_VENDA CURSOR FOR
		SELECT DataCarga, cdProduto, cdCliente, cdFuncionario, cdFormapagamento, cdVenda, Valor, Quantidade, ValorComissao, DataVenda
		From VendaAux
		WHERE DataCarga = @DATA	
		
	OPEN C_VENDA	
	FETCH NEXT FROM C_VENDA	INTO @DATA_CARGA, @CDPRODUTO, @CDCLIENTE, @CDFUNCIONARIO, @CDFORMAPAGAMENTO, @CDVENDA, @VALOR, @QUANTIDADE, @VALORCOMISSAO, @DATAVENDA
	WHILE (@@FETCH_STATUS = 0)
	BEGIN
		SET @IDPRODUTO = (SELECT MAX(idProduto) FROM DimProduto WHERE  cdProduto = @CDPRODUTO)
		SET @IDFORMAPAGAMENTO = (SELECT idFormaPagamento FROM DimFormaPagamento WHERE cdFormaPagamento = @CDFORMAPAGAMENTO)
		SET @IDFUNCIONARIO = (SELECT MAX(idFuncionario) FROM DimFuncionario WHERE cdFuncionario = @CDFUNCIONARIO)
		SET @IDCLIENTE = (SELECT idCliente FROM DimCliente WHERE cdCliente = @CDCLIENTE)
		SET @IDTEMPO = (SELECT idTempo FROM DimTempo WHERE Data = @DATAVENDA) 
		
		select @IDPRODUTO, @IDFORMAPAGAMENTO, @IDFUNCIONARIO, @IDCLIENTE, @IDTEMPO
		
		IF (NOT(@IDPRODUTO IS NULL OR @IDFORMAPAGAMENTO IS NULL ) AND (NOT(@IDFUNCIONARIO IS NULL OR @IDCLIENTE IS NULL OR @IDTEMPO IS NULL)))
		BEGIN
			INSERT INTO FatoVenda (DimTempo_idTempo, DimCliente_idCliente, DimFormaPagamento_idFormaPagamento, DimFuncionario_idFuncionario,DimProduto_idProduto, cdVenda, Quantidade, Valor, ValorComissao, DataVenda) 
			VALUES (@IDTEMPO, @IDCLIENTE, @IDFORMAPAGAMENTO, @IDFUNCIONARIO, @IDPRODUTO, @CDVENDA, @QUANTIDADE, @VALOR, @VALORCOMISSAO, @DATAVENDA)
		END		
		FETCH NEXT FROM C_VENDA	INTO @DATA_CARGA, @CDPRODUTO, @CDCLIENTE, @CDFUNCIONARIO, @CDFORMAPAGAMENTO, @CDVENDA, @VALOR, @QUANTIDADE, @VALORCOMISSAO, @DATAVENDA
	END
	CLOSE C_VENDA
	DEALLOCATE C_VENDA			
END;
GO

SET DATEFORMAT DMY
EXEC SP_CARGA_STAGING_FATO_VENDA '16/07/2012'

select * from FatoVenda

select * from VendaAux